18-4 gJ ASCII 仵

fprintf 函數可將資料依格式指定字串來寫入 ASCII 檔案,其使用語法如下:

fprintf(fid, format, y)

其中 fid 是欲寫入之檔案的辨識碼(由 fopen 產生),format 是格式指定字串,用以指定資料寫至檔案的格式,y 則是 MATLAB 的資料變數。常用的格式指定字串有下列幾種:

其他各種格式指定字串可輸入 help fprintf 來得到詳細的線上說明。例如,欲將一平方根表寫入 squareRootTable.txt,可輸入如下:

Example 1: 18-檔案讀寫/fprintf01.mx = 1:10; y = [x; sqrt(x)]; fid = fopen('squareRootTable.txt', 'w'); fprintf(fid, 'Table of square root:\r\n'); fprintf(fid, '%2.0f => %10.6f\r\n', y); fclose(fid); dos('start squareRootTable.txt'); % 開啟 squareRootTable.txt

在上例中,%2.0f 印出的總欄寬為 2,且不帶小數,而 %10.6f 印出的總欄寬為 10,包含欄寬為 6 的小數部份。(讀者可由開啟的 squareRootTable.txt 來驗證上述的列印格式。)

sprintf 函數和 fprintf 函數的功能很類似,唯一不同的是,sprintf 將資料以字串形式傳回,而不是直接寫入檔案。例如:

>> str = sprintf('log(%f) = %e\n', 2, log(2)) str = log(2.000000) = 6.931472e-001

在某些應用上,可能需要用到暫存目錄及暫存檔案。欲取用系統的暫存目錄,可用 tempdir,如下:

>> directory = tempdir directory = C:\Users\ROGERJ~1\AppData\Local\Temp\

欲開啟一暫存檔案,可用 tempname,如下:

>> filename = tempname filename = C:\Users\ROGERJ~1\AppData\Local\Temp\tpd8a0f416_427f_46de_9e3e_c8baf771a03f

Hint
tempdir 和 tempname 所傳回的字串會依作業系統的環境變數而定,因此不同系統可能會產生不同的回傳字串。

以下的範例,就是利用 tempname 產生一個暫存的 HTML 檔案,然後再將此檔案顯示在瀏覽器。

Example 2: 18-檔案讀寫/writeHTML.mfilename = [tempname, '.html']; fid = fopen(filename, 'w'); fprintf(fid, '<html><body>\n'); fprintf(fid, 'This is a test homepage written by MATLAB!\n'); fprintf(fid, '</body></html>'); fclose(fid); dos(['start ', filename]); % 啟動和 .html 相連結的應用程式

產生之網頁如下:

Hint
當MATLAB 的計算結果適合用列表(Table)或多媒體檔案(如影像、聲音、動畫)來呈現時,由網頁來顯示這些計算結果是一個蠻不錯的選擇。


MATLAB程式設計:入門篇